<?php
/**
 * Oggetto grafico che crea, a partire da un'immagine sorgente, un'immagine stile polaroid inserendo un
 * ombra e un contorno bianco intorno all'immagine.
 *
 * @author Fabrizio Filieri
 */
class Polaroid
{
	private $source;

	/**
	 * Larghezza dell'immagine della polaroid, lasciare a null se non occorre un ridimensionamento
	 * @var int larghezza dell'immagine
	 */
	public $width			= null;

	/**
	 * Altezza dell'immagine della polaroid. Lasciare a null se non occorre un ridimensionamento
	 * @var int altezza dell'immagine
	 */
	public $height			= null;

	/**
	 * Il colore del bordo della polaroid in formato:
	 * #RGB
	 * #RRGGBB
	 *
	 * Di default è impostato su bianco (#FFF)
	 *
	 * @var string stringa con il colore in formato RGB
	 */
	public $borderColor		= "#FFFFFF";

	/**
	 * Il colore dell'ombra della polaroid in formato:
	 * #RGB
	 * #RRGGBB
	 *
	 * Di default è impostato su grigio (#505050)
	 *
	 * @var string stringa con il colore in formato RGB
	 */
	public $shadowColor		= "#505050";

	/**
	 * L'angolo di inclinazione della polaroid. Può assumere valori compresi tra 15 e -15.
	 * De default è impostato su 5 gradi.
	 *
	 * @var int angolo di rotazione della polaroid
	 */
	public $rotation		= 5;

	/**
	 * Crea una nuova polaroid a partire da un file sorgente immagine.
	 *
	 * @param string $filesource il nome del file immagine sorgente
	 */
	public function __construct($filesource)
	{
		$this->source = $filesource;
	}

	/**
	 * Salva la polaroid, con le impostazioni di default, o impostate sugli attributi della polaroid,
	 * su file.
	 *
	 * @param string $filedest il nome del file di destinazione
	 */
	public function save($filedest)
	{
		if ($this->width != null && $this->height != null)
		{
			$option = " -thumbnail ".$this->width."x".$this->height." ";
		}

		$option.= " -quality 100 -bordercolor \"".$this->borderColor."\" -background \"".$this->shadowColor."\" -polaroid ".$this->rotation." ";

		$command = "convert ".$this->source." ".$option." ".$filedest;
		exec($command);
		//echo "<br>".$command."<br>";
	}
}
?>
